﻿#ifndef MYTHREAD_H
#define MYTHREAD_H
#include <QDebug>
#include <mutex>
#include <QMainWindow>
#include <QThread>
//#include <mainwindow.h>

#include <opencv.hpp>
#include <video.hpp>
#include <videoio.hpp>
#include <cvconfig.h>

#include <QSqlDatabase>

using namespace cv;


class MyThread:public QThread
{
    Q_OBJECT
public:
    MyThread();
    void closeThread();
    void SetTemplate(bool startsignal,cv::Mat& src,int mode);//模板匹配设置
    void MatCcorrection(Mat& src,Mat& outputImg);//图片校正
    void MatSegmentation(Mat& inputsrc);//数字分割
    void myDiscern(Mat n);              //数字识别

    virtual void run() override;

signals:
    void  thShowImage(Mat &src);
    void  thSetNumber(int number);
private:
    volatile bool isStop;//易失性变量 所以用关键词进行声明
    volatile bool TemplateStart;
    Mat frame;
    Mat thTemplateImage;
    Mat result;
    QImage ShowImage;
    int match_method;
    Mat Pcount[5];


    /*Method
    0: SQDIFF           平方差匹配
    1: SQDIFF NORMED    标准平方差匹配
    2: TM CCORR         相关匹配
    3: TM CCORR NORMED  标准相关匹配
    4: TM COEFF         相关匹配
    5: TM COEFF NORMED" 标准相关匹配
对于方法 SQDIFF 和 SQDIFF_NORMED,
越小的数值代表更高的匹配结果. 而对于其他方法, 数值越大匹配越好*/
};

#endif // MYTHREAD_H
